Integrated Circuit Including a Programmable Logic Analyzer with Enhanced Analyzing and Debugging Capabilities and a Method Therefor

ABSTRACT

An integrated circuit including a logic analyzer with enhanced analyzing and debugging capabilities and a method therefor. In one embodiment of the present invention, an embedded logic analyzer (ELA) receives a plurality of signals from a plurality of buses within an integrated circuit (IC). The ELA includes an interconnect module to select a trigger signal and/or a sampled signal from the plurality of received signals. A trigger module sets at least one trigger condition and detects if the trigger signal satisfies the at least one trigger condition. When the trigger condition is satisfied, an output module performs at least one task based upon the satisfied at least one trigger condition. If a sampling process is initiated by the output module, the plurality of sampled signals is sampled and may be stored in a memory. The capability of the output module to perform multiple user-defined tasks enhances the debugging capability of the ELA and makes it more versatile.

CROSS REFERENCE TO RELATED APPLICATION

Pursuant to 37 C.F.R. §1.78, this application is a continuationapplication and claims the benefit of the earlier filing date of U.S.application Ser. No. 12/877,819, filed Sep. 8, 2010, entitled “AnIntegrated Circuit Including a Programmable Logic Analyzer with EnhancedAnalyzing and Debugging Capabilities and a Method Therefor,” whichitself is a continuation-in-part application and claims the benefit ofthe earlier filing date of U.S. application Ser. No. 12/542,976, filedAug. 18, 2009, entitled “An Integrated Circuit Including a ProgrammableLogic Analyzer with Enhanced Analyzing and Debugging Capabilities and aMethod Therefor.” The content of each of the above applications ishereby incorporated by reference as if fully set forth herein.

BACKGROUND

1. Field of the Invention

The present invention relates generally to an embedded logic analyzer,and particularly to a programmable embedded logic analyzer for analyzingan electronic circuit.

2. Description of the Related Art

A logic analyzer is an electronic instrument that is used to capture anddisplay data signals of an electronic circuit. Generally, the logicanalyzer captures the data signals that are too fast to be observed by auser. The user observes the data signals captured by the logic analyzerto effectively analyze the electronic circuit and to take preemptiveactions or to debug based on the analysis.

Logic Analyzers may be broadly classified as external logic analyzersand embedded logic analyzers. The embedded logic analyzer is generallyincluded within a programmable logic device or an integrated circuit(IC), e.g., a complex programmable logic device (CPLD), fieldprogrammable gate array (FPGA), application specific integrated circuit(ASIC), etc. The embedded logic analyzer has the ability to capturelarge amounts of high speed data signals within the IC.

The embedded logic analyzer may include a memory to store the captureddata signals. Usually, the embedded logic analyzer is programmable tocapture and store the data signals specified by the user. The datasignals stored by the embedded logic analyzer may be transferred to acomputer for further analysis. The data signals are generallytransferred to the computer through an interface provided on the IC.

FIG. 1 is a block diagram of a conventional embedded logic analyzer(ELA) 100 included within an integrated circuit (not shown). The ELA 100includes an interconnect module 110 to receive a plurality of datasignals within the integrated circuit. The interconnect module 110 isprogrammable to select a plurality of signals to be sampled and at leastone trigger signal to enable sampling from the plurality of receivedsignals. The at least one trigger signal is transferred to a triggermodule 120. The trigger module 120 is programmable to set a triggercondition and to detect if the at least one trigger signal satisfies thetrigger condition. If the trigger condition is satisfied, the triggermodule 120 initiates a sampling process. Upon the initiation of thesampling process, a memory controller 130 starts sampling the pluralityof signals to be sampled from the interconnect module 110. The sampledsignals may be stored in a memory 140 for further analysis. Therefore,the ELA 100 operates to execute a general code given below:

IF (<TRIGGER CONDITION>) THEN (SAMPLE SIGNALS(X)),

wherein the TRIGGER CONDITION is any logical operation or a series oflogical operations and the SIGNALS (X) are the plurality of signals tobe sampled from the interconnect module 110. According to the codeexecuted by the ELA 100, when the trigger condition is satisfied, theELA 100 samples at least one sampled signal and stores the sampledsignal in the memory 140.

However, conventional ELAs are limited to sampling when the triggercondition is satisfied. Further, conventional ELAs do not capture,analyze, and/or debug software data or firmware data signals within theIC, and additional instrument(s) may be necessary in order to analyzethese types of data. Additionally, in order to program the ELA or toanalyze the data stored within the ELA, the user is required to bepresent at a workstation where the ELA is installed.

It would be desirable therefore to provide an ELA with enhancedanalyzing and debugging capabilities to obviate the above-mentionedproblems.

SUMMARY OF THE INVENTION

Exemplary embodiments of the present invention overcome the shortcomingsin known logic analyzers and thereby satisfy a significant need for amechanism for effectively testing and debugging a system. In accordancewith an exemplary embodiment, there is disclosed an integrated circuitincluding a logic analyzer having a first input receiving a plurality ofsignals and a first output for providing selected samples of the signalsappearing at the first input; and a first block having a first inputcoupled to the logic analyzer for receiving one or more of the signalsappearing at the first input thereof and an output coupled to the logicanalyzer for directly providing a distinct set of one or more signalsthereto that is based upon the one or more signals at the first input ofthe first block according to a predetermined function, the predeterminedfunction being configurable. By providing a distinct signal set to thelogic analyzer based upon the one or more signals appearing at the firstinput of the logic analyzer, the first block provides added flexibilityin being able to efficiently perform both system-level andsubsystem-level test and debug operations.

According to another exemplary embodiment, there is disclosed a systemincluding an integrated circuit having an embedded logic analyzer blockwith an input for receiving a plurality of signals and a trigger eventblock for detecting an occurrence of an event based in part upon theplurality of signals; and a block coupled to the embedded logic analyzerand having an output that is based upon the detection of the occurrenceof the event, the output being provided to the embedded logic analyzerfor sampling or storage therein. By providing to the embedded logicanalyzer an output for sampling or storage that is based upon thedetection or occurrence of an event, the block advantageously allows fora more efficient mechanism for sampling and storing system data.

Additional features and advantages of the invention will be set forth inthe detailed description which follows, and in part will be readilyapparent to those skilled in the art from that description or recognizedby practicing the invention as described herein, including the detaileddescription which follows, the claims, as well as the appended drawings.

It is to be understood that both the foregoing general description andthe following detailed description of the present embodiments of theinvention and are intended to provide an overview or framework forunderstanding the nature and character of the invention as it isclaimed. The accompanying drawings are included to provide a furtherunderstanding of the invention and are incorporated into and constitutea part of this specification. The drawings illustrate variousembodiments of the invention and together with the description serve toexplain the principles and operation of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The above-mentioned and other features and advantages of the variousembodiments of the invention, and the manner of attaining them, willbecome more apparent will be better understood by reference to theaccompanying drawings, wherein:

FIG. 1 is a block diagram of a conventional embedded logic analyzer;

FIG. 2 is a block diagram of one embodiment of an integrated circuitincluding a logic analyzer according to the present invention;

FIG. 3 is a block diagram of an apparatus embedding the integratedcircuit of FIG. 2;

FIG. 4 is a block diagram illustrating a network access device couplinga remote host to the integrated circuit of FIG. 2;

FIG. 5 is a block diagram illustrating an interface to supply softsignals to the logic analyzer included on the integrated circuit of FIG.2;

FIG. 6 is a block diagram illustrating an interface configured to supplysoft signals to the logic analyzer of FIG. 1 according to the presentinvention;

FIG. 7 is a block diagram showing a processor in communication with thelogic analyzer included within the integrated circuit of FIG. 2;

FIG. 8 is a flow chart illustrating the actions performed to capturesoftware signals within the integrated circuit of FIG. 2 according tothe present invention;

FIG. 9 is a block diagram illustrating a system having an integratedcircuit according to an exemplary embodiment of the present invention;

FIG. 10 is a block diagram illustrating a system having an integratedcircuit according to an exemplary embodiment of the present invention;and

FIG. 11 is a block diagram illustrating a system having an integratedcircuit according to an exemplary embodiment of the present invention.

DETAILED DESCRIPTION

Reference will now be made in detail to the exemplary embodiment(s) ofthe invention, as illustrated in the accompanying drawings. Wheneverpossible, the same reference numerals will be used throughout thedrawings to refer to the same or like parts.

The present invention is directed to a programmable embedded logicanalyzer included within an integrated circuit having enhanced analyzingand debugging capabilities. FIG. 2 illustrates one embodiment of anembedded logic analyzer (ELA) 200 disposed on an integrated circuit (IC)260. The ELA 200 includes an interconnect module 210 that isprogrammable to select at least one of a plurality of candidate signalswithin the IC 260. The plurality of candidate signals selected by theinterconnect module 210 may include at least one trigger signal and/orat least one signal to be sampled (i.e., a sampled signal). Theinterconnect module 210 routes the at least one trigger signal to atrigger module 220. The trigger module 220 detects if the at least onetrigger signal satisfies at least one trigger condition specified by auser. If the trigger condition is satisfied, an output module 230performs at least one task. For example, the output module 230 maymodify at least one signal within the IC 260.

The IC 260 includes a plurality of buses 265 that carry the plurality ofcandidate signals. The plurality of signals includes at least onesampled signal and at least one trigger signal. The interconnect module210 receives the plurality of signals from the plurality of buses 265.The interconnect module 210 is programmable to select at least onesampled signal and/or at least one trigger signal from the plurality ofreceived signals. Essentially, the interconnect module 210 selects thesampled signal(s) and/or trigger signal(s) specified by a user. In oneembodiment, the interconnect module 210 may be a multiplexer.

The interconnect module 210 routes the trigger signal to the triggermodule 220. The trigger module 220 is programmable to set the triggercondition. The trigger condition may be a single logical operation(e.g., a simple event) or a series of logical operations (e.g., acomplex series of events performed by a finite state machine). Thetrigger module 220 detects if the at least one trigger condition issatisfied by the trigger signal. If the trigger condition is satisfied,the trigger module 220 provides information to the output module 230.

The output module 230 performs at least one task from a group of tasksbased upon, in response to, or as a result of the satisfaction of the atleast one trigger condition. The group of tasks may include modifying atleast one signal from the plurality of received signals, modifying theat least one trigger condition, and initiating a sampling process. Inone embodiment, the output module 230 is a field programmable gatearray.

If the output module 230 initiates the sampling process, a samplingcontroller 240 starts sampling the sampled signal from the interconnectmodule 210. The sampled signal sampled by the sampling controller 240may be stored in a memory 250. The signals stored in a memory 250 may betransferred to a computer (not shown) for analysis. Such signal transferto the computer may occur through a communication port 280 such as a USBport. The signals transferred to the computer may then be analyzed bythe user.

While FIG. 2 shows that the memory 250 resides in the ELA 200, it willbe appreciated by one of ordinary skill in the art that the memory maybe a separate component on the integrated circuit 260 in anotherembodiment. In yet another embodiment, the memory may be locatedseparately from the integrated circuit 260, provided that it remainscommunicatively coupled to the ELA. After analyzing the signals, atleast one action within an apparatus 300 embedding the IC 260, as shownin FIG. 3, may be performed by configuring or programming the outputmodule 230 to perform a specific task based upon the analysis. Forexample, the user may debug an error or fault or correct the action of acomponent of the apparatus 300. Therefore, the apparatus 300 can bediagnosed more effectively to ensure proper functioning of the apparatus300. In one embodiment, the apparatus 300 may be an imaging device suchas a printer, a scanner, or a multi-function device which has theability to print, scan, fax and/or copy.

The output module 230 may be programmed or configured to modify at leastone signal based upon, in response to, or as a result of the satisfiedtrigger condition. If the satisfied trigger condition indicates anerror, the output module 230 may modify at least one signal from theplurality of signals received by the ELA 200 to correct the indicatederror. For example, if a value of signal ‘X’ has to be 30 for error-freeoperation of the apparatus 300, and if the trigger condition X≠30 issatisfied, the output module 230 modifies the value of signal X to bringthe value of the signal to 30 for error free operation of the apparatus300.

The output module 230 may also instruct a controller 270 (shown in FIG.2) to modify at least one signal from the plurality of signals receivedby the ELA 200 to correct the indicated error. For example, the outputmodule 230 may instruct the controller 270 to turn off a pulse widthmodulator (PWM) if the PWM that regulates the speed of a motor isdetected to be stuck, thereby preventing damage to the motor. The outputmodule 230 may also be capable of stopping a direct memory access (DMA)operation. In addition, the output module 230 may modify the triggercondition, if required. These capabilities of the output module 230greatly enhance the debugging power of the ELA 200. Therefore, the ELA200 generally executes a code given below:

IF (<CONDITION>) THEN (<ACTION(S)>),

wherein ACTION(S) is at least any one of the above mentioned actionsperformed by the output module or the controller, and CONDITION is thetrigger condition set by the user.

In one embodiment, as shown in FIG. 4, the IC 260 includes a networkaccess device 400. The network access device 400 is communicativelycoupled to the ELA 200 and is connected to a remote host 410 directly orthrough a network. The connection may include a wired connection and/ora wireless connection, and the network may be the Internet, a local areanetwork, a wide area network or a metropolitan area network. The remotehost 410 is capable of programming the ELA 200 within the IC 260. Theremote host 410 is also capable of analyzing the sampled signals storedin memory. The remote host 410 accesses the ELA 200 through the networkaccess device 400.

The ELA 200 may be programmed to automatically and periodically send thestored sampled signals to the remote host 410 for analysis. For example,the ELA 200 embedded within a printer may be programmed to automaticallyand periodically send an encoder signal to the remote host 410. Theencoder signal indicates the motion of the motor within the printer. Ifit is determined that the encoder signals are decaying or going into abad state, a remote user may provide instruction to service the printer.In one embodiment, the ELA 200 is programmable to transfer stored datasignals to the remote host 410 if such instruction or command isreceived from the remote host 410.

In another embodiment, as illustrated in FIG. 5, the IC 260 includes acentral processing unit (CPU) 500. The CPU 500 provides a plurality ofdata signals to the ELA 200. The data signals may be hardware, softwareor firmware signals. The data signals are supplied from the CPU 500 tothe ELA 200 through an interface. The interface is communicativelycoupled to the CPU 500 and the ELA 200. The interface includes a storagemedium 510 and a plurality of communication lines (1−n). The pluralityof communication lines are communicatively coupled with the CPU 500 andthe storage medium 510. The plurality of communication lines (1−n) areconfigured to supply the plurality of data signals from the CPU 500 tothe storage medium 510. The storage medium 510 is configured to storethe plurality of data signals.

Each data signal from the plurality of data signals is associated with adata field and an address field. The data field provides the value ofthe data signal to be stored and the address field specifies a locationin the storage medium 510 where the data signal is stored. The storagemedium 510 includes a plurality of memory locations. Each of theplurality of memory locations has a unique address. The plurality ofdata signals stored in the storage medium 510 is supplied to theinterconnect module 210 through the plurality of buses on the IC 260.Essentially, the storage medium 510 is in electrical communication withthe plurality of buses on the IC 260 to supply the stored data signalsto the interconnect module 210.

The stored data signals supplied to the interconnect module 210 includesthe hardware, software and/or firmware data signals. The data signalsinclude a plurality of sampled signals and at least one trigger signal.The interconnect module 210 selects the plurality of sampled signals andat least one trigger signal from the plurality of received data signals.The trigger signal is supplied to the trigger module 220. The triggermodule 220 detects if the trigger signal satisfies at least one triggercondition. If the trigger condition is satisfied, the samplingcontroller 240 samples the plurality of sampled signals from theinterconnect module 210. The plurality of sampled signals is stored inthe memory 250. The plurality of stored signals along with other storedsignals is transferred to the computer for analysis. Therefore, thesoftware, hardware and/or firmware signals can be analyzedsimultaneously on the computer.

In another embodiment, as illustrated in FIG. 6, the interface i.e., theplurality of communication lines (1−n) and the storage medium 510 aredisposed on an IC 600. The IC 600 includes the ELA 100 of FIG. 1 and aCPU 610. The CPU 610 supplies the plurality of data signals to the ELA100. The plurality of data signals includes at least one software orfirmware data signal. The plurality of data signals are supplied fromthe CPU 610 to the ELA 100 through the plurality of communication lines(1−n) and the storage medium 510. The plurality of communication lines(1−n) is configured to supply the plurality of data signals from the CPU610 to the storage medium 510. The storage medium 510 is configured tostore the plurality of data signals. The data signals stored in thestorage medium 510 are supplied to the interconnect module 110 throughthe plurality of buses on the IC 600. Essentially, the storage medium510 is in electrical communication with the plurality of buses on the IC600 to supply the stored data signals to the interconnect module 110.

In yet another embodiment, as illustrated in FIG. 7, the ELA 100 isdisposed on an IC 700 that includes a processor 710. The processor 710receives a plurality of signals from a plurality of buses on the IC 700.Such signals may be any combination of hardware, software and/orfirmware signals (indicated by arrow A) within the IC 700. The processor710 is communicatively coupled to the ELA 100 disposed on the IC 700.More specifically, processor 710 may be communicatively coupled to thetrigger module 120 of the ELA 100.

In an alternate embodiment, the IC 700 may be communicatively coupled tothe ELA 200 of FIG. 2. In this embodiment, the processor 710 receives atleast one trigger signal from the trigger module 220 to detect if atleast one trigger condition is satisfied. If at least one triggercondition is satisfied, the processor 710 modifies at least one signalfrom the plurality of data signals received by the processor 710. Theprocessor 710 is also programmable to modify at least one triggercondition in the trigger module 220 when the at least one triggercondition is satisfied. The processor 710 is programmable through aninterface 720 provided on the IC 700.

The IC 700 may include the network access device 400. The network accessdevice 400 communicatively couples the IC 700 to the remote host 410.The remote host 410 can program the ELA 100 disposed on the IC 700. Theremote host 410 can also analyze the sampled signals stored in the ELA100. Therefore, the remote host 410 can diagnose an apparatus 730embedding the ELA 100 and the network access device 400.

FIG. 8 is a flowchart illustrating a method for capturing softwaresignals or events within the IC 260. The CPU 500 disposed on the IC 260supplies a plurality of software signals to the storage medium 510 atblock 800. The storage medium is configured to store the plurality ofsoftware signals (block 805). The storage medium 510 sends the storedsoftware signals to the interconnect module 210 of ELA 200 at block 810.The interconnect module 210 is programmed to select a plurality ofsoftware signals that is to be sampled from the plurality of receivedsoftware signals (block 815). The interconnect module 210 is alsoprogrammed to select at least one software trigger signal from theplurality of received software signals (block 820). The user sets withinthe trigger module 220 at least one trigger condition for a softwareevent (block 825). The trigger module 220 detects if the set triggercondition is satisfied by the at least one software trigger signal(block 830). If the trigger condition is satisfied, the trigger module220 initiates the sampling process at block 835. Otherwise, the triggermodule repeats the detection of a satisfied set trigger condition.

Upon the initiation of the sampling process, the sampling controller 240samples the plurality of software signals that is to be sampled from theinterconnect module 210 (block 840). The sampled software signals maythen be stored in the memory 250 at block 845. The stored softwaresignals may also be transferred to the computer for analysis by aprogram running on the computer or by a user.

It will be appreciated by one of ordinary skill in the art the presentinvention is not limited to software signals. Rather other signals, suchas hardware and firmware, may be captured instead of and/or incombination with software signals.

FIG. 9 illustrates a system integrated circuit 900 according to anotherembodiment of the present invention. Integrated circuit 900 may bedisposed in a system 905 having a plurality of modules M. Integratedcircuit 900 may include an embedded logic analyzer 902 having aninterconnect module 210, trigger module 220, memory controller 240 andmemory 250 as described above. Embedded logic analyzer 902 may becoupled with the system modules M so that embedded logic analyzer 902may be used to effectively test or debug system 905 in which it isdisposed.

It is further understood that the phrases “test” and “debug” areintended to include those operations typically performed duringdevelopment, testing, debugging, system analysis and in-field monitoringand servicing of the system and its system modules M, and is notintended to be limited to only one phase or time period of systemactivity from design through the usable life of the system.

Integrated circuit 900 may also include a custom block 904 whichreceives one or more signals associated with embedded logic analyzer902. In particular, custom block 904 may receive as an input one or moresignals provided to embedded logic analyzer 902 from the other modules Mof the system. Such signals may include signals that are available forsampling or event triggering by embedded logic analyzer 902. Customblock 904 may generate at its output one or more output signals that arebased upon the one or more received input signals and which are fed backinto embedded logic analyzer 902 for sampling or triggering. Byproviding to embedded logic analyzer 902 one or more additional signalsfor sampling and/or event triggering that is based upon signalsassociated with embedded logic analyzer 902, embedded logic analyzer 902may more efficiently debug a system in which integrated circuit 900 isdisposed.

Custom block 904 may include circuitry that is specific to theparticular system and/or system modules M which are available for testand/or debug using embedded logic analyzer 902. In an exemplaryembodiment of the present invention, custom block 904 is configurable sothat the signals generated thereby may be configurable. Having customblock 904 configurable advantageously allows for substantial flexibilityfor testing and/or debugging a wide variety of system modules M andsystem signals generated thereby. Custom block 904 may be implemented asa FPGA or CPLD. Alternatively, custom block 904 may be implemented witha processor having memory coupled thereto for storing code for executionby the processor. By having the memory accessible for loading differentcode, custom block 904 may provide sufficient flexibility to test and/ordebug a substantially large number of different system modules M. In yetanother alternative, custom block 904 may include state machinecircuitry that is programmable in part by programming and/or storinginformation into registers that are located in or associated with thestate machine. It is understood that custom block 904 may be implementedin any number of ways to provide configurable functionality and signalgeneration.

As shown in FIG. 9, custom block 904 may receive one or more signalsthat are provided to embedded logic analyzer 902. Such signals providedto embedded logic analyzer 902 may be received by custom block 904 bydirectly coupling one or more inputs of custom block 904 to one or moreinputs of embedded logic analyzer 902. In addition or in thealternative, such signals provided to embedded logic analyzer may bereceived by custom block 904 by directly coupling one or more inputs ofcustom block 904 to one or more outputs of interconnect module 210 thatare to trigger an event and/or to be sampled, as shown in dotted linesin FIG. 9. As further shown in FIG. 9, the output of custom block 904may provide to embedded logic analyzer 902 one or more output signalsfor event triggering or sampling. Such one or more output signals may beprovided to embedded logic analyzer 902 by directly coupling the outputof custom block 904 to an input of embedded logic analyzer 902. Inaddition or in the alternative, such one or more output signals may beprovided to embedded logic analyzer 902 by directly coupling the outputof custom block 904 to an input of trigger module 220 and/or an input ofmemory controller 240, as shown in dotted lines in FIG. 9.

Integrated circuit 900 may further include an interface 906 which may beused for accessing custom block 904 and embedded logic analyzer 902. Inparticular, interface 906 may provide a wired or wireless connectionwith a network device on a network, such as a remote host (not shown).Interface 906 may provide the necessary interface between the networkdevice and various blocks in integrated circuit 900, including embeddedlogic analyzer 902 and custom block 904. Embedded logic analyzer 902,and particularly interconnect module 210 and trigger module 220, may becontrolled, configured and/or programmed using interface 906. Inaddition, the data sampled by embedded logic analyzer 902 may bedownloaded to a network device for analysis via interface 906.

As mentioned above, custom block 904 may be accessible using interface906. For example, in the event custom block 904 is reconfigurable and/orprogrammable, custom block 904 may be configured by a network deviceusing interface 906 to generate one or more output signals tailored tothe particular system modules M being tested or debugged. In addition orin the alternative, custom block 904 may be controlled by a remote hostduring system test or debug using interface 906. As a result, customblock 904 may be configured at runtime of a system level test or debugsession.

FIG. 9 shows custom block 904 being separate from embedded logicanalyzer 902 in integrated circuit 900. It is understood that,alternatively, custom block 904 may be located within embedded logicanalyzer 902 in integrated circuit 900 and be coupled to interconnectmodule 100, trigger module 220 and memory controller 240 as describedabove.

FIG. 10 illustrates an integrated circuit 910 of system 905 according toanother exemplary embodiment of the present invention. Integratedcircuit 910 may include embedded logic analyzer 902 as described abovewith respect to FIG. 9, having interconnect module 210, trigger module220, memory controller 240 and memory 250. Integrated circuit 910 mayalso include a custom block 920 for generating one or more signals forsampling or event triggering by embedded logic analyzer 902, based uponsignals provided to and/or generated within embedded logic analyzer 902.

Like custom block 904 in FIG. 9, custom block 920 is coupled to embeddedlogic analyzer 902 to receive as an input one or more signals providedto embedded logic analyzer 902. Custom block 920, like custom block 904,may generate one or more output signals based upon one or more receivedinput signals which is provided to embedded logic analyzer 902, triggermodule 220 (for event triggering) and/or memory controller 240 (forselective sampling). Similar to custom block 904, custom block 920 mayinclude circuitry that is specific to the system modules M that arecapable of being tested or debugged by embedded logic analyzer 902. Inone embodiment, the functions performed by custom block 920 ingenerating one or more output signals may be configurable and/orprogrammable using FPGA or CPLD circuitry, a processor executingdownloaded test/debug code, state machine circuitry, etc. Interface 906may be coupled to custom block 920 for providing access thereto so thatcustom block may be controlled, configured and/or programmed using anetwork device, such as a host device.

Further, custom block 920 may receive as an input one or more signalsgenerated by trigger module 220. In particular, one or more triggersignals generated by trigger module 220, which indicates the detectionof at least one event, may be provided as an input to custom block 920.One or more output signals generated by custom block 920 may be basedupon the one or more trigger signals generated by trigger module 220. Inthis way, an output signal generated by custom block 920 may be definedbased upon signals generated by system modules M under test or debug aswell as actions that are defined and executed at runtime of a test ordebug session.

For example, a trigger signal generated by trigger module 220 ofembedded logic analyzer 902 and provided to custom block 920 may be usedto enable signal generating circuitry within custom block 920. In oneimplementation, custom block 920 may be configured or otherwiseprogrammed as an accumulator to count a number of events, such as thenumber of words read from memory by a direct memory access (DMA) systemmodule. One testing or debugging the system selects the DMA module tomonitor and controls, programs and/or configures trigger module 220accordingly using interface 906. A trigger program by which triggermodule 220 is configured may include an action to trigger accumulation.Upon detection of the condition of one or more signals provided totrigger module 220, a trigger signal generated by trigger module 220indicates detection of the condition and enables the accumulatorconfigured within custom block 920 to begin accumulating.

Trigger module 220 may also, either via the same trigger signal used toenable custom block 920 or a different trigger signal, disable customblock 920 following its enablement. The signal used for disabling may bedriven by circuitry that is configurable and/or programmable and detectthe occurrence of at least one trigger event relating to one or moresignals received by trigger module 220. In the event custom block 920 isconfigured as an accumulator, following disablement the output of theaccumulator is provided to the input of embedded logic analyzer 902 forselective sampling by memory controller 240 or event triggering bytrigger module 220. By controlling the accumulator function withincustom block 920 to accumulate only upon the occurrence of a userspecified trigger event and providing the accumulated result to embeddedlogic analyzer 902, substantially less memory is needed to store samplesof the output of the accumulator function than would otherwise benecessary in order to count the number of words read by the DMA systemmodule.

The particulars of the trigger event for controlling, enabling and/ordisabling custom block 902 may be configured or programmed at runtime ofa test or debug session, like any other trigger event monitored bytrigger module 220. The trigger event for disabling custom block 920,for example, may be based in part upon a predetermined period of timelapsing following its enablement, wherein the predetermined period oftime is configured or otherwise programmed at runtime. It is understood,though that the trigger event may be based upon any of a number offunctions or operations defined within trigger module 220 and upon oneor more signals received thereby.

It is understood that custom blocks 904 and 920 may be utilized in thesame integrated circuit chip. FIG. 11 illustrates such an integratedcircuit 940 of system 905 according to an exemplary embodiment of thepresent invention, including both custom blocks 904 and 920. It isfurther understood that an integrated circuit may include more than onecustom block 904 and/or more than one custom block 920. With respect toincluding more than one custom block 920 within a single integratedcircuit chip, each custom block 920 may receive at an input thereof oneor more signals from trigger module 220. The one or more signalsreceived from trigger module 220 by each custom block 920 may bedistinct relative to the one or more signals received by the othercustom block 920. In addition, each custom block 920 may be separatelyprogrammed and/or configured by a host device using interface 906.

It is understood that integrated circuits 900, 910 and 940 may be usedin virtually any system which may benefit from an embedded mechanism tofacilitate the efficient testing and debugging of the system and thesystem modules M thereof. For example, a printer, all-in-one printingdevice or multifunction printer may include integrated circuit 900.

Use of custom blocks 904 and 920 has been seen to substantially reducethe amount of memory necessary for storing signals sampled by embeddedlogic analyzer 902. For instance, a printer or other imaging device mayinclude a serial interface for providing to the printer printhead printdata for an entire print job, which may require gigabytes of storage. Ifit is desired to know the number of times a specific nozzle in theprinthead fires, custom block 904 or 920 may be configured to receivethe signal from the serial interface and generate a signal indicative ofthe particular nozzle firing, without any information relating to anyother nozzle of the printhead. The generated signal may be provided asan input to embedded logic analyzer 902 for selectively sampling duringa test/debug session. Sampling and storage in memory of the customgenerated signal has been seen to occupy only kilobytes of memory,substantially less than the amount of memory needed to sample and storethe entire serial interface.

A mechanism for testing and debugging a system may include, in additionto custom blocks 904 and 920, software to communicate with embeddedlogic analyzer 902 and custom blocks 904 and 920. The software providesthe user with the ability to select in-system options for such blocksand control or otherwise program them after the system has beensynthesized and/or assembled, such as at runtime of a system test ordebug session. The software, including a user interface, providescommunication with embedded logic analyzer 902 and blocks 904 and 920via interface 906. The software may be used to receive at a remotedevice the data sampled and stored by embedded logic analyzer 902 anddisplay the signals to the remote device user.

It will be apparent to those skilled in the art that variousmodifications and variations can be made to the present inventionwithout departing from the spirit and scope of the invention. Forexample, it is understood that the embedded logic analyzer 902 mayinclude an output module 230 and controller 270 found in embedded logicanalyzer 200 of FIG. 2. In addition or in the alternative, integratedcircuit 900, 910 and 940 may include a CPU 500 and storage medium 510coupled to embedded logic analyzer 902 as shown in FIGS. 5 and 6.Integrated circuits 900, 910 and 940 may also include a processor 710coupled to trigger module 220 as shown in FIG. 7. Thus it is intendedthat the present invention cover the modifications and variations ofthis invention provided they come within the scope of the appendedclaims and their equivalents.

1. A system, comprising: an integrated circuit, comprising: an embeddedlogic analyzer block having an input for receiving a plurality ofsignals from one or more portions of a system under test for samplingand event triggering, and a trigger event block for detecting anoccurrence of an event based in part upon the plurality of signals; anda block having a first input coupled to the embedded logic analyzerblock for receiving one or more of the plurality of signals, a secondinput coupled to the trigger event block for receiving a signalindicating the detection of the occurrence of the event, circuitry forgenerating a distinct set of one or more signals based upon the signalindicating the detection of the occurrence of the event, the distinctset of one or more signals being different from the plurality of signalsappearing at the input of the embedded logic analyzer block and from theone or more of the plurality of signals received at the first input ofthe block, and an output for providing the generated distinct set of oneor more signals to the embedded logic analyzer block as additional testsignals for at least one of sampling thereof and event triggering. 2.The system of claim 1, wherein the block is configurable to perform afunction that is enabled based in part upon the detection of theoccurrence of the event.
 3. The system of claim 1, wherein the distinctset of one or more signals is generated based in part upon at least oneof the plurality of signals appearing at the input of the embedded logicanalyzer block.
 4. The system of claim 1, wherein the block isconfigurable as an accumulator having an output which forms at leastpart of the output of the block and is provided to the embedded to logicanalyzer circuitry at a second input thereof.
 5. The system of claim 1,wherein the embedded logic analyzer circuitry comprises a multiplexerblock having an input coupled to the input of the embedded logicanalyzer circuitry, the multiplexer block selecting at least one of theplurality of signals appearing at the input of the embedded logicanalyzer circuitry for sampling or event triggering thereby, the triggerevent block is coupled to an output of the multiplexer block, and thedistinct set of one or more signals is provided to an input of thetrigger event block.
 6. The system of claim 1, wherein the embeddedlogic analyzer circuitry comprises an output control block forselectively sampling at least one of the one or more signals received bythe input of the embedded logic analyzer circuitry and the distinct setof one or more signals at the output of the block.
 7. The system ofclaim 1, wherein the block comprises field programmable circuitry. 8.The system of claim 1, wherein the embedded logic analyzer circuitrycomprises an input multiplexer block having a first input coupled to theinput of the embedded logic analyzer circuitry and a second inputcoupled to the output of the block.
 9. The system of claim 1, whereinthe distinct set of one or more signals is based on the one or moresignals received at the first input of the block according to apredetermined function, the predetermined function being one ofconfigurable and configured.
 10. A system, comprising: integratedcircuitry, comprising: an embedded logic analyzer block having an inputfor receiving a plurality of signals from one or more portions of thesystem that is under test for sampling and event triggering, and atrigger event block for detecting an occurrence of an event based inpart upon the plurality of signals; and a block having a first inputcoupled to the embedded logic analyzer block for receiving one or moreof the plurality of signals, a second input coupled to the trigger eventblock for receiving a signal indicating the detection of the occurrenceof the event, circuitry for generating a distinct set of one or moresignals based upon the signal indicating the detection of the occurrenceof the event and one or more of the plurality of signals received at thefirst input of the block according to a predetermined function, thedistinct set of one or more signals being different from the pluralityof signals appearing at the input of the embedded logic analyzer blockand from the one or more of the plurality of signals received at thefirst input of the block, and an output for providing the generateddistinct set of one or more signals to the embedded logic analyzer blockas additional test signals for at least one of sampling thereof andevent triggering.
 11. The system of claim 10, wherein the predeterminedfunction is configurable.
 12. The system of claim 10, wherein thepredetermined function is configured.
 13. The system of claim 10,wherein the block is configurable to perform a function that is enabledbased in part upon the detection of the occurrence of the event.
 14. Thesystem of claim 10, wherein the block is configurable as an accumulatorhaving an output which forms at least part of the output of the blockand is provided to the logic analyzer circuitry for sampling thereof orevent triggering.
 15. The system of claim 10, wherein the embedded logicanalyzer circuitry comprises a multiplexer block coupled to the input ofthe embedded logic analyzer circuitry for selecting at least one of theplurality of signals appearing at the input of the embedded logicanalyzer circuitry for sampling or event triggering thereby, the triggerevent block is coupled to an output of the multiplexer block fordetecting the event, and the distinct set of one or more signals isprovided to an input of the trigger event block.
 16. The system of claim10, wherein the embedded logic analyzer circuitry comprises an outputcontrol block for selectively sampling signals appearing at the firstinput of the embedded logic analyzer circuitry and at the output of theblock.
 17. The system of claim 10, wherein the block comprises fieldprogrammable circuitry.
 18. The system of claim 10, wherein the embeddedlogic analyzer circuitry comprises an input multiplexer block having afirst input coupled to the input of the embedded logic analyzercircuitry and a second input coupled to the output of the block.
 19. Thesystem of claim 10, wherein the block comprises field programmedcircuitry.